Skip to content

Feat/nav2 preset - #3

Merged
PythonToGo merged 4 commits into
mainfrom
feat/nav2-preset
Jul 12, 2026
Merged

Feat/nav2 preset#3
PythonToGo merged 4 commits into
mainfrom
feat/nav2-preset

Conversation

@PythonToGo

Copy link
Copy Markdown
Owner

No description provided.

PythonToGo and others added 4 commits July 11, 2026 13:29
`rosmac sim nav2-diffbot`: Gazebo diffbot + gpu_lidar + slam_toolbox + Nav2
(벽 아레나), 맥에서 /navigate_to_pose goal 3/3 SUCCEEDED. 97 tests, ruff/mypy clean.

프리셋별 브리지 스코핑 (KI-30 대응):
- Preset.bridge_allow (6 allow 카테고리). None이면 무스코프(기존 소형 프리셋 유지).
- bridge_scope_config(): 미지정 카테고리 빈목록(deny) 명시로 "전부 허용" 누출 차단,
  doctor C8 왕복 토픽 /rosmac/doctor/* 상시 주입.
- sim start: config·systemd 드롭인을 파일 push(셸 이스케이프 회피) → VM 브리지
  스코핑 재기동 + 맥 브리지 리셋. sim stop: 드롭인 제거 → 무스코프 복원(멱등).

자산: nav2-diffbot.yaml(+bridge_allow), nav2_world.sdf(gpu_lidar+벽 아레나),
nav2-diffbot.launch.py(gz+bridge+static_tf+slam+nav2 단계 기동), slam_params.yaml,
layouts/nav2.json. viz --layout nav2. 유닛 4종 추가.

문서: README(en/ko) 프리셋·능력 매트릭스·구조적 한계, workflow(en/ko) Nav2 절, CHANGELOG.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
S0 실측: 촘촘한 타이밍(slam@5, nav2@10)에서 nav2 lifecycle 활성화가 간헐 실패
(~25-30%: bt_navigator 미활성/노드 10개). gz가 벽 아레나 월드 로드 + /clock·/scan
발행을 마치기 전에 slam/nav2가 떠서 CPU 경합 + 미준비 상태로 활성화 실패.
run_spike.sh 검증 타이밍(gz→8s→slam→5s→nav2) + 여유로 stagger 조정 →
연속 7회 전부 건강(11노드, nav2 7노드 active). health(/scan) 게이트 60s 내 유지.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
S0 게이트가 KI-30의 "nav2 서비스 174개 포화" 원인을 반증. 무스코프 브리지가
풀스택(서비스 155·액션 12)을 정상 라우팅하고 맥 goal 3/3 SUCCEEDED. N2/N3에서
스코핑이 통한 건 스코프 적용이 VM 브리지를 재시작한 부수효과였음.

진짜 원인 규명: 스택을 재기동해도 브리지를 켜둔 채면 죽은 스택의 라우트가 누적돼
새 스택의 액션 하위 서비스가 맥에서 디스커버리 실패(KI-17 계열). 실측: 동일 스택이
브리지 재시작 전 0/6 → 후 4/4.

- sim.py: 프리셋별 스코핑 메커니즘(bridge_allow, _apply/_clear_bridge_scope,
  bridge_scope_config, systemd 드롭인) 제거. start()가 `_reset_bridge_session`으로
  VM+맥 브리지를 리셋(rosmac up의 KI-17 방지와 동일). ~80줄 → 단순 재시작.
- nav2-diffbot.yaml: bridge_allow 제거(무스코프). E2E: fresh 3/3, churn 후에도 goal 성공.
- 유닛 4개(스코핑) 제거 + 무스코프 로딩 1개. 94 tests, ruff/mypy clean.
- README/workflow/CHANGELOG(en/ko): "스코핑 필수" → "기본 브리지 + sim 브리지 리셋".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
맥에서 액션 goal을 보내려면 msg 패키지(nav2_msgs 등)가 맥 conda env에도 필요한데,
없으면 goal이 "server not available"로 조용히 실패했다(health/scan은 통과해 브리지
문제로 오인). `rosmac sim`이 프리셋 `mac_env_pkgs`를 맥 env에 자동 설치.

- Preset.mac_env_pkgs 필드 + cli sim에서 설치 호출.
- deps.ensure_installed(cfg, pkgs): 기존 installed_packages/install_missing 재사용,
  미설치만 설치·반환(멱등). MoveIt(moveit_msgs)도 동일 필드로 커버 가능.
- nav2-diffbot.yaml: mac_env_pkgs=[ros-humble-nav2-msgs].
- 유닛 2개(설치·멱등), nav2 프리셋 테스트에 필드 확인 추가. 96 tests, ruff/mypy clean.
- E2E: nav2-msgs 제거 → sim이 자동 설치("✓ Mac env packages installed") → READY.
- workflow(en/ko)·CHANGELOG: "수동 설치" → "sim 자동 설치".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
@PythonToGo
PythonToGo merged commit 7ff959a into main Jul 12, 2026
0 of 3 checks passed
PythonToGo added a commit that referenced this pull request Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant